package dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;
import javax.swing.JOptionPane;

import bean.Curso;
import bean.Horarios;
import bean.Professor;

public class ProfessorDao {
	
	public void salvarProfessor(Professor professor){
		
		EntityManager em = FabricaConexao.getConexao().createEntityManager();
		
		try {
			em.getTransaction().begin();
			Professor p = em.find(Professor.class, professor.getMatricula());
			if(!professor.equals(p)){
				em.persist(professor);
				JOptionPane.showMessageDialog(null, "Professor cadastrado com sucesso!");
			} else {
				em.merge(professor);
				JOptionPane.showMessageDialog(null, "Professor alterado com sucesso!");
			}
			
			em.getTransaction().commit();
			
		} finally {
			em.close();
		}
	}
		
		
		public void excluirProfessor (int matricula){
		
			   EntityManager em = FabricaConexao.getConexao().createEntityManager();
		        
		        try {
		            em.getTransaction().begin();
		            Professor professor = em.find(Professor.class, matricula);

		            em.remove(professor);
		            em.getTransaction().commit();
		            JOptionPane.showMessageDialog(null,
		                    "Exclusão realizada com sucesso");

		        } finally { 	
		            em.close();
		        }
		}
		
		
		  public List<Professor> listarProfessores() {// 
		        EntityManager em = FabricaConexao.getConexao().createEntityManager();
		        List<Professor> lista;
		        Query query = em.createQuery("select p from Professor p");
		        lista = query.getResultList();
		        return lista;
		    }
		  
			
		  public Professor consultaProfessor(int id) {
			  EntityManager em = FabricaConexao.getConexao().createEntityManager();
			    Professor professor = null;
			    try {
			      //Consulta um professor pelo seu ID.
			      professor = em.find(Professor.class, id);
			    } finally {
			      em.close();
			    }
			    return professor;
			  }
		
		
	}

